// 參考書中範例
var obj = new Object(); // 建立空物件,等於直接使用 {}
var arr = new Array(); // 建立空的陣列,等於直接使用 []
var date = new Date(); // 建立表示時間的 Date 物件
var regexp = new RegExp("javascript"); // 建立正規化表示式比對的 RegExp物件
// object literal
var obj = {} // 無屬性物件
var coordinate = {x:0, y:0}; // 兩個屬性
var point = {x: coordinate.x, y: coordinate.y};
var book ={
"title": "CSS大全",
'sub-title': "WEB的視覺呈現", //有 hyphens - 字號,字串字面值
"for": "all audiences", // 使用 "" 是因為 for 為保留字
"author1": { // 物件 author1 為 book的屬性
firstname: "Eric A",
surname: "Meyer"
},
"author2": {
firstname: "Estelle",
surname: "Weyl"
}
};
利用物件建立運算式 (Object creation expression)建立一個新的物件,並調用建構式(constructor)這個函式來為物件做初始化:
/*函式調用運算式:
---------------------*/
f(0) // f 為函式運算式, 0 為引數運算式
/* 物件建立運算式 (Object creation expression)
-----------------------------------------------*/
var myFruit = new Fruit(); //若在一個函式或方法調用前加上關鍵字 new 就是 constructor
new Object();
new calculator(2,3);
new Date();
new Fruit();
// 當物件建立時,沒有引數的話,可以省略()
new Object;
new Date;
new Fruit;
// 我們先定義一個建構式
function Fruit(color, taste) {
this.color = color;
this.taste = taste;
}
//JavaScript中使用 new 建立一個新的空物件,它會用我們給的引數去調用(呼叫) Fruit 函式,並把此新的空物件傳給 Fruit 函式。 Fruit 函式會用 this 來參考此新的物件,並設定此物件的屬性(color、taste)。
var apple = new Fruit("red", "sweet");
// apple 就有了顏色和味道的屬性
console.log(apple.color); // "red"
console.log(apple.taste); // "sweet"
當JavaScript中使用建構式來建立新的物件時,通常不會在建構式中使用 return
:
function Fruit(color, taste) {
this.color = color;
this.taste = taste;
}
var apple = new Fruit("red", "sweet"); // 一個新建立並初始化的物件
console.log(apple); // { color: 'red', taste: 'sweet' }
若建構式明確地使用 return
來回傳一個物件,那麼此物件就會成為調用運算式的值:
function Fruit(color, taste) {
this.color = color;
this.taste = taste;
return { color: 'green', taste: 'sour' };
}
var apple = new Fruit("red", "sweet");
console.log(apple); // { color: 'green', taste: 'sour' }
若建構式使用沒有任何值的 return
,或它回傳一個基本型別值(primitive value),此回傳值會被忽略,調用的值仍然是新物件:
function Fruit(color, taste) {
this.color = color;
this.taste = taste;
return 123; // 基本型別值,所以回傳值被忽略了
}
var apple = new Fruit("red", "sweet"); // 一個新建立並初始化的物件
console.log(apple); // { color: 'red', taste: 'sweet' }